import $util from '@/common/util.js'
export default {
    state: {
        skus_type: 0,
        title: "",
        category: [],
        desc: "",
        unit: "",
        stock: 0,
        min_stock: 0,
        display_stock: 0,
        status: 0,
        express: "",

        banners:[],// 商品大图

        oprice:0, // 市场价格
		pprice:0, // 销售价格
		cprice:0, // 成本价格
		weight:0, // 重量
		volume:0, // 体积

        // 规格卡片
        sku_card: [
            {
                name: '颜色',
                type: 0, //  规格类型 0无 1颜色 2图片
                list: [{
                    name:'黄色',
                    image: '',
                    color: ''
                },
                {
                    name:'红色',
                    image: '',
                    color: ''
                }]
            },
            {
                name: '大小',
                type: 0, //  规格类型 0无 1颜色 2图片
                list: [{
                    name:'XL',
                    image: '',
                    color: ''
                },
                {
                    name:'XXL',
                    image: '',
                    color: ''
                }]
            }
        ],
        // 商品类型
        goods_type_id:1,
        // 商品属性
        goods_attrs:{
            phone_model:''
        },
        discount:0,
        // 表头
        ths: [
			{ name:"商品规格",rowspan:1,colspan:1,width:"" },
			{ name:"图片",rowspan:2,width:"60" },
			{ name:"销售价",rowspan:2,width:"100" },
			{ name:"市场价",rowspan:2,width:"100" },
			{ name:"成本价",rowspan:2,width:"100" },
			{ name:"库存",rowspan:2,width:"100" },
			{ name:"体积",rowspan:2,width:"100" },
			{ name:"重量",rowspan:2,width:"100" },
			{ name:"编码",rowspan:2,width:"100" },
		],
    },
    getters: {
        //  过滤掉list为空的sku_card 这也新增加的规格属性没有值就不会直接体现到表格
         skuLabels(state) {
             return state.sku_card.filter(item => {
                 return item.list.length > 0
             })
         },
        // 获取表头
        table_ths(state, getters) {
            let length = getters.skuLabels.length
            state.ths[0].colspan = length
            state.ths[0].rowspan = length > 0 ? 1 : 2
            return state.ths
        },
        // 获取属性规格列表组合
        tableData(state) {
            let sku_list = []
            if (state.sku_card.length === 0) {
                return []
            }
            state.sku_card.forEach((item) => {
                if (item.list.length > 0) {
                    sku_list.push(item.list)
                }
            })
            let arr = $util.cartesianProductOf(...sku_list)
            return arr.map(v=>{
				let obj = {
					skus:[],
					image:"", // sku图片
					pprice:0, // 销售价格
					oprice:0, // 市场价格
					cprice:0, // 成本价格
					stock:0,
					volume:0,
					weight:0,
					code:''
				}
				obj.skus = v
				return obj
			})
        }
    },
    mutations: {
        // 修改state
        vModelState(state, {key, value}) {
            state[key] = value
        },
        // 增加规格卡片
        addSkuCard(state) {
            state.sku_card.push({
                name: '规格属性',
                type: 0,
                list: []
            })
        },
        // 删除规格卡片
        delSkuCard(state, index) {
            state.sku_card.splice(index, 1)
        },
        // 修改卡片
        vModelSkuCard(state, {key, index, value}) {
            state.sku_card[index][key] = value
        },
        // 规格卡片排序
        sortSkuCard(state, {action, index}) {
            // 排序
            $util[action](state.sku_card, index)
        },
        // 添加规格属性
        addSkuValue(state, index) {
            state.sku_card[index].list.push({
                name:'规格属性',
                image: '',
                color: ''
            })
        },
        // 删除指定卡片的规格属性
        delSkuValue(state, {cardIndex, valueIndex}) {
            state.sku_card[cardIndex].list.splice(valueIndex, 1)
        },
        // 修改规格属性
        updateSkuValue(state, {cardIndex, valueIndex, key, value}) {
            state.sku_card[cardIndex].list[valueIndex][key] = value
        },
        // 排序规格属性列表
        sortSkuValue(state, {index, value}) {
            state.sku_card[index].list = value
        },
        // 修改商品属性
        vModelGoodsAttr(state, {key, value}) {
            state.goods_attrs[key] = value
        },
    },
    actions: {}
}